1、统计数组中的逆序对
思想：归并排序
class Solution {
public:
    int sort(vector<int>& data,vector<int>& p,int l,int r)
    {
        if(l>=r)
            return 0;
        //先分
        int mid=(l+r)/2;
        long long count=sort(data,p,l,mid)+sort(data,p,mid+1,r);
        //奖数据拷贝到p数据，方便后续的比较
        for(int i=l;i<=r;i++)
        {
            p[i]=data[i];
        }
        int i=l,j=mid+1;
        for(int k=l;k<=r;k++)
        {
            //左半边的数组已经没元素了
            if(i==mid+1)
                data[k]=p[j++];
            else if(j==r+1||p[i]<=p[j])
                data[k]=p[i++];
            else
            {
                data[k]=p[j++];
                count+=mid-i+1;
            }
        }
        return (int)(count%1000000007);
    }
    int InversePairs(vector<int> data) {
        if(data.empty())
            return 0;
        vector<int> p(data.size(),0);
        return sort(data,p,0,data.size()-1);
    }
};